﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace KioskosJugandoLimpio.Classes
{
    public class Opcion
    {
        public Pregunta pregunta;
        private string opcion;
        public int idOpciones;
        public string valor;

        public Opcion(int idOpciones, string opcion,string valor , Pregunta pregunta)
        {
            // TODO: Complete member initialization
            this.idOpciones = idOpciones;
            this.opcion = opcion;
            this.pregunta = pregunta;
            this.valor = valor;
        }

        public Opcion(int idOpciones)
        {
            // TODO: Complete member initialization
            this.idOpciones = idOpciones;
        }

        public Control control { get {
            Control ctl = null;
            switch (this.pregunta.ControlDefault)
            {
                case "checkbox": ctl = new CheckBox(); 
                    ((CheckBox)ctl).Text =  this.opcion;
                    ((CheckBox)ctl).Attributes["value"] = this.idOpciones.ToString();
                    ((CheckBox)ctl).Attributes["name"] = this.pregunta.idPreguntas.ToString();
                    ctl.ID = this.pregunta.idPreguntas.ToString();
                    ctl.ClientIDMode = ClientIDMode.Static;
                    
                    break;
                case "text": ctl = new TextBox(); break;
                case "radio": ctl = new RadioButton();                     
                    ((RadioButton)ctl).Text =  this.opcion;
                    ((RadioButton)ctl).Attributes["value"] = this.idOpciones.ToString();
                    ctl.ID = this.pregunta.idPreguntas.ToString();
                    ctl.ClientIDMode = ClientIDMode.Static;
                    break;
            }
            return ctl;
        } }

        public ListItem listItem { get {
            return new ListItem(this.opcion, this.idOpciones.ToString());
        } }

        public Control input {
            get {
                Label ctl = new Label();
                TextBox inp = new TextBox();
                inp.Text = this.opcion;
                inp.CssClass = "opcion";
                TextBox inpV = new TextBox();
                inpV.Text = this.valor;
                inpV.CssClass = "opcion";
                string opid;
                if (this.idOpciones >= 1)
                {
                    opid = idOpciones.ToString();
                }
                else
                {
                    opid = Guid.NewGuid().ToString();
                }
                ctl.ID = "__spanOption_"+opid;
                ctl.ClientIDMode = ClientIDMode.Static;
                inp.ID = "__opcion_" + opid + "_texto";
                inp.ClientIDMode = ClientIDMode.Static;
                inp.Attributes.Add("idOpciones", this.idOpciones.ToString());
                inpV.ID = "__opcion_" + opid + "_valor";
                inpV.ClientIDMode = ClientIDMode.Static;
                inpV.Attributes.Add("idOpciones", this.idOpciones.ToString());
                Label lblOp = new Label();
                lblOp.Text = "Opcion:";
                ctl.Controls.Add(lblOp);
                ctl.Controls.Add(inp);
                Label lblVal = new Label();
                lblVal.Text = " Valor:";
                ctl.Controls.Add(lblVal);
                ctl.Controls.Add(inpV);
                HtmlGenericControl br = new HtmlGenericControl("BR");
                ctl.Controls.Add(br);
                return ctl;
            }
        }

        public Control more { get {
            Control ctl = new Control();
            Label lblOpciones = new Label();
            lblOpciones.CssClass = "pregunta";
            lblOpciones.Text = "Opciones";
            ctl.Controls.Add(lblOpciones);
            LinkButton addBtn = new LinkButton();
            addBtn.OnClientClick = (string.Format("return fnAddOption('{0}');", this.pregunta.idPreguntas));
            addBtn.Text = "[+]";
            ctl.Controls.Add(addBtn);
            return ctl;

        } }

        internal void guardar(System.Data.SqlClient.SqlTransaction tran)
        {
            if (this.idOpciones == -1)
            {
                this.idOpciones = SQL.fnExec(string.Format("EXEC guardarOpcion {0}, '{1}' , '{2}', {3}", this.idOpciones, this.opcion, this.opcion, this.valor == "" ? "null" : this.valor), tran);
            }
            else {
                SQL.fnExec(string.Format("EXEC guardarOpcion {0}, '{1}' , '{2}', {3}", this.idOpciones, this.opcion, this.opcion, this.valor==""?"null":this.valor), tran);
            }
            SQL.fnExec(string.Format("EXEC guardarOpcionesPreguntas {0}, {1}",this.idOpciones , this.pregunta.idPreguntas), tran);
        }
    }
}
